<?php
/*
#文件上传
#lsj 2008-09-11
*/
if(!defined('APP_HOME')) exit('Access Denied');

class lib_class_upload {

	private $upfile = null;
	private $upfile_max_size = 512;#单位：KB
	private $upfile_ext = array('gif', 'jpg', 'jpeg', 'png');#允许的文件类型
	private $upfile_file_name = '';#上传到服务器上的文件名
	private $errno = 0;#错误码

	function __construct(){

	}

	/*
	#设置要上传的控件
	默认是将FILE控件的第一个元素给设置了
	*/
	function set_upfile($thefile = null){
		if($thefile) $this->upfile = $_FILES[$thefile];
		else $this->upfile = array_shift($_FILES);
		return true;
	}

	/*
	#设置允许上传的文件最大数
	单位：KB
	*/
	function set_max_size($size){
		$this->upfile_max_sise = $size;
		return true;
	}

	/*
	#设置允许的文件类型
	*/
	function set_ext($ext){
		if(is_string($ext)){
			$arr = explode(",", $ext);
		}
		if(is_array($ext)){
			$arr = $ext;
		}
		$this->upfile_ext = array_unique(array_merge($this->upfile_ext, $arr));
		return true;
	}

	/*
	#设置文件在服务器上的文件名，可以是路径
	*/
	function set_filename($name){
		$this->upfile_file_name = $name;
		return true;
	}

	/*
	#获取文件的扩展名
	*/
	function get_ext(){
		return strtolower(end(explode(".",$this->upfile['name'])));
	}

	/*
	#获取文件的大小
	*/
	function get_size(){
		return $this->upfile['size'];
	}

	/*
	#检查上传文件的合法性
	*/
	function check_file(){
		$ext_name = strtolower(end(explode(".",$this->upfile['name'])));
		if($this->upfile['error']){
			$this->errno = $this->upfile['error'];
			return false;
		}elseif($this->upfile['size'] > $this->upfile_max_size * 1024){
			$this->errno = 8;
			return false;
		}elseif(!in_array($ext_name,$this->upfile_ext)){
			$this->errno = 9;
			return false;
		}
		return true;
	}

	/*
	#上传文件
	*/
	function up_file($thefile = null){

		if($thefile) $this->set_upfile($thefile);

		if(!$this->check_file()){
			return false;
		}
		if(!is_uploaded_file($this->upfile['tmp_name'])){
			$this->erron = 10;
			return false;
		}
		if(!$this->upfile_file_name){
			$this->errno = 11;
			return false;
		}else{
			$path = dirname($this->upfile_file_name);
			if(!is_dir($path)){
				if(!@mkdir($path)){
					$this->errno = 12;
					return false;
				}
			}
		}
		#上传
		if(move_uploaded_file($this->upfile['tmp_name'], $this->upfile_file_name)){
			return basename($this->upfile_file_name);
		}else{
			$this->erron = 13;
			return false;
		}
	}

	/*
	#报错
	*/
	function get_error(){
		$error_arr = array(
			1 => '大小超过了服务器项端限制的值',
			2 => '大小超过了HTML表单中限制的值',
			3 => '只有部分被上传了',
			4 => '没有文件被上传',
			6 => '系统找不到临时文件夹',
			7 => '文件写入失败',
			8 => '大小超过了该系统限制的值',
			9 => '文件类型不正确',
			10 => '文件没有传到服务器上',
			11 => '文件名不能为空',
			12 => '要上传的服务器路径不存在',
			13 => '上传失败',
		);
		if($this->errno)
			return array($this->errno, $error_arr[$this->errno]);
		return false;
	}


}






?>
